В С++ коммуникация — это поток, а не статическое событие хранения. Библиотека iostream использует полиморфную иерархию где специализированные классы, такие как ifstream (файлы) и istringstream (память), наследуют от istream. Это позволяет наследование потоков: функции, предназначенные для базового потока, могут прозрачно обрабатывать данные из любого источника.
Ограничение неподдерживаемого копирования
Потоки представляют собой уникальные, состоятельные соединения с аппаратным обеспечением. Чтобы предотвратить конфликт нескольких объектов за один и тот же указатель файла или буфер консоли, объекты ввода-вывода не могут быть скопированы или присвоены. Попытка использовать код типа ofstream out1, out2; out1 = out2; вызывает ошибку компилятора. Следовательно, объекты ввода-вывода должны передаваться по непостоянной ссылке.
Последовательный мост
Хотя потоки предоставляют интерфейс, последовательные контейнеры (vector, list) обеспечивают память. Входящие данные обычно структурируются в эти контейнеры, выбирая vector для скорости или list для гибких вставок.